package cn.icare.cms;

import cn.icare.cms.dao.po.ItemCat;
import cn.icare.cms.model.ro.*;
import cn.icare.cms.model.vo.rest.MsgDatasVO;

import java.util.List;
import java.util.Map;

/**
 * 商品各仓库库存表Service接口类
 */
public interface ItemStoreService {
    Long createOne(AddItemStoreRO ro,String userName);

    boolean updateOne(EditItemStoreRO ro);

    boolean deleteOne(Long itemId,Integer storeId);

    MsgDatasVO getList(Long itemId,Integer pageNum, Integer pageSize);

    /**
     * 仅获取商品的有库存仓库列表
     * @param itemId 商品Id
     * @return
     */
    MsgDatasVO getListByItem(Long itemId);

    /**
     * 获取商品待设置库存的仓库列表，包含库存数为0的仓库
     * @param itemId
     * @return
     */
    MsgDatasVO getWaitEditNum(Long itemId,Integer areaId);


    List<Map<String,Object>> getItemStoreList(Long itemId, Long areaId, Integer minNum);

    /**
     *  商品下单减库存操作
     * @param itemId 商品id
     * @param storeId 仓库id
     * @param num 数量
     * @return
     */
    boolean subtractItemNum(Long itemId,Integer storeId,Integer num);

    /**
     * 商品取消订单后，库存恢复操作
     * @param itemId 商品id
     * @param storeId 仓库id
     * @param num   数量
     * @return
     */
    boolean addItemNum(Long itemId,Integer storeId,Integer num);
}
